🎖️GitЯра🎖️
src/helpers/ui/U8g2Display.h 93b2db63de9009af047a2d0e1bcd97b4b0ba7106 (93b2db63) Text, 2.92 KB
Tff7b72#Tff7b72pragma once
Tff7b72#Tff7b72include T8b949e"DisplayDriver.h"
Tff7b72#Tff7b72include T8b949e<U8g2lib.h>
Tff7b72#Tff7b72include T8b949e<Wire.h>
Tff7b72#Tff7b72ifndef DISPLAY_ADDRESS
Tff7b72#Tff7b72define DISPLAY_ADDRESS 0x3C
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72ifndef OLED_WIDTH
Tff7b72#Tff7b72define OLED_WIDTH 72
Tff7b72#Tff7b72endif
Tff7b72#Tff7b72ifndef OLED_HEIGHT
Tff7b72#Tff7b72define OLED_HEIGHT 40
Tff7b72#Tff7b72endif
Te6edf3class Te6edf3U8g2Display Tff7b72: Te6edf3public Te6edf3DisplayDriver Tb4b4b4{
T8b949e// U8g2 constructor for SSD1306/SSD1315 72×40 panel — handles all
T8b949e// GDDRAM column/page offsets, SETMULTIPLEX, SETDISPLAYOFFSET internally
Te6edf3U8G2_SSD1306_72X40_ER_F_HW_I2C Te6edf3_u8g2Tb4b4b4;
Tffa657bool Te6edf3_isOnTb4b4b4;
Tffa657uint8_t Te6edf3_drawColorTb4b4b4;
T8b949e// Font metrics for current font (cached on setTextSize)
Tffa657uint8_t Te6edf3_fontAscentTb4b4b4;
Tffa657uint8_t Te6edf3_fontHeightTb4b4b4;
Tffa657void Td2a8ffapplyFontTb4b4b4(Tffa657int Te6edf3szTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3sz Tff7b72>Tff7b72= T79c0ff2Tb4b4b4) Tb4b4b4{
Te6edf3_u8g2Tb4b4b4.Te6edf3setFontTb4b4b4(Te6edf3u8g2_font_6x10_mrTb4b4b4)Tb4b4b4; T8b949e// slightly larger font for better readability. TODO: more font sizes?
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3_u8g2Tb4b4b4.Te6edf3setFontTb4b4b4(Te6edf3u8g2_font_5x7_mrTb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3_fontAscent Tff7b72= Te6edf3_u8g2Tb4b4b4.Te6edf3getAscentTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3_fontHeight Tff7b72= Te6edf3_u8g2Tb4b4b4.Te6edf3getAscentTb4b4b4(Tb4b4b4) Tff7b72- Te6edf3_u8g2Tb4b4b4.Te6edf3getDescentTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3publicTff7b72:
Te6edf3U8g2DisplayTb4b4b4(Tb4b4b4) Tff7b72: Te6edf3DisplayDriverTb4b4b4(Te6edf3OLED_WIDTHTb4b4b4, Te6edf3OLED_HEIGHTTb4b4b4)Tb4b4b4,
Te6edf3_u8g2Tb4b4b4(Te6edf3U8G2_R0Tb4b4b4, T8b949e/* reset=*/ Te6edf3U8X8_PIN_NONETb4b4b4)Tb4b4b4,
Te6edf3_isOnTb4b4b4(Tffa657falseTb4b4b4)Tb4b4b4, Te6edf3_drawColorTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4, Te6edf3_fontAscentTb4b4b4(T79c0ff5Tb4b4b4)Tb4b4b4, Te6edf3_fontHeightTb4b4b4(T79c0ff6Tb4b4b4) Tb4b4b4{Tb4b4b4}
Tffa657bool Te6edf3beginTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// Wire must already be initialised by board.begin() before this is called
Tffa657bool Te6edf3ok Tff7b72= Te6edf3_u8g2Tb4b4b4.Te6edf3beginTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3okTb4b4b4) Tb4b4b4{
Te6edf3_u8g2Tb4b4b4.Te6edf3setI2CAddressTb4b4b4(Te6edf3DISPLAY_ADDRESS Tff7b72* T79c0ff2Tb4b4b4)Tb4b4b4; T8b949e// U8g2 uses 8-bit address
Te6edf3_u8g2Tb4b4b4.Te6edf3setFontPosTopTb4b4b4(Tb4b4b4)Tb4b4b4; T8b949e// y coordinate = top of text, not baseline
Te6edf3_u8g2Tb4b4b4.Te6edf3setFontModeTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4; T8b949e// transparent background
Te6edf3applyFontTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4; T8b949e// default to compact font
Te6edf3_isOn Tff7b72= Tffa657trueTb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3okTb4b4b4;
Tb4b4b4}
Tffa657bool Te6edf3isOnTb4b4b4(Tb4b4b4) Te6edf3override Tb4b4b4{ Tff7b72return Te6edf3_isOnTb4b4b4; Tb4b4b4}
Tffa657void Te6edf3turnOnTb4b4b4(Tb4b4b4) Te6edf3override Tb4b4b4{
Te6edf3_u8g2Tb4b4b4.Te6edf3setPowerSaveTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4;
Te6edf3_isOn Tff7b72= Tffa657trueTb4b4b4;
Tb4b4b4}
Tffa657void Te6edf3turnOffTb4b4b4(Tb4b4b4) Te6edf3override Tb4b4b4{
Te6edf3_u8g2Tb4b4b4.Te6edf3setPowerSaveTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4;
Te6edf3_isOn Tff7b72= Tffa657falseTb4b4b4;
Tb4b4b4}
Tffa657void Te6edf3clearTb4b4b4(Tb4b4b4) Te6edf3override Tb4b4b4{
Te6edf3_u8g2Tb4b4b4.Te6edf3clearBufferTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3_u8g2Tb4b4b4.Te6edf3sendBufferTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Te6edf3startFrameTb4b4b4(Te6edf3ColorVal Te6edf3bkg Tff7b72= Te6edf3UIColorTff7b72:Tff7b72:Te6edf3window_bkgTb4b4b4) Te6edf3override Tb4b4b4{
Te6edf3_u8g2Tb4b4b4.Te6edf3clearBufferTb4b4b4(Tb4b4b4)Tb4b4b4; T8b949e// TODO: apply 'bkg' color
Te6edf3_drawColor Tff7b72= Te6edf3UIColorTff7b72:Tff7b72:Te6edf3primary_txtTb4b4b4;
Te6edf3_u8g2Tb4b4b4.Te6edf3setDrawColorTb4b4b4(Te6edf3_drawColorTb4b4b4)Tb4b4b4;
Te6edf3applyFontTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Te6edf3setTextSizeTb4b4b4(Tffa657int Te6edf3szTb4b4b4) Te6edf3override Tb4b4b4{
Te6edf3applyFontTb4b4b4(Te6edf3szTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Te6edf3setColorTb4b4b4(Te6edf3ColorVal Te6edf3cTb4b4b4) Te6edf3override Tb4b4b4{
Te6edf3_drawColor Tff7b72= Te6edf3cTb4b4b4;
Te6edf3_u8g2Tb4b4b4.Te6edf3setDrawColorTb4b4b4(Te6edf3_drawColorTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Te6edf3setCursorTb4b4b4(Tffa657int Te6edf3xTb4b4b4, Tffa657int Te6edf3yTb4b4b4) Te6edf3override Tb4b4b4{
Te6edf3_cursorX Tff7b72= Te6edf3xTb4b4b4;
Te6edf3_cursorY Tff7b72= Te6edf3yTb4b4b4;
Tb4b4b4}
Tffa657void Te6edf3printTb4b4b4(Tff7b72const Tffa657charTff7b72* Te6edf3strTb4b4b4) Te6edf3override Tb4b4b4{
Te6edf3_u8g2Tb4b4b4.Te6edf3drawStrTb4b4b4(Te6edf3_cursorXTb4b4b4, Te6edf3_cursorYTb4b4b4, Te6edf3strTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Te6edf3fillRectTb4b4b4(Tffa657int Te6edf3xTb4b4b4, Tffa657int Te6edf3yTb4b4b4, Tffa657int Te6edf3wTb4b4b4, Tffa657int Te6edf3hTb4b4b4) Te6edf3override Tb4b4b4{
Te6edf3_u8g2Tb4b4b4.Te6edf3drawBoxTb4b4b4(Te6edf3xTb4b4b4, Te6edf3yTb4b4b4, Te6edf3wTb4b4b4, Te6edf3hTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Te6edf3drawRectTb4b4b4(Tffa657int Te6edf3xTb4b4b4, Tffa657int Te6edf3yTb4b4b4, Tffa657int Te6edf3wTb4b4b4, Tffa657int Te6edf3hTb4b4b4) Te6edf3override Tb4b4b4{
Te6edf3_u8g2Tb4b4b4.Te6edf3drawFrameTb4b4b4(Te6edf3xTb4b4b4, Te6edf3yTb4b4b4, Te6edf3wTb4b4b4, Te6edf3hTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Te6edf3drawXbmTb4b4b4(Tffa657int Te6edf3xTb4b4b4, Tffa657int Te6edf3yTb4b4b4, Tff7b72const Tffa657uint8_tTff7b72* Te6edf3bitsTb4b4b4, Tffa657int Te6edf3wTb4b4b4, Tffa657int Te6edf3hTb4b4b4) Te6edf3override Tb4b4b4{
Te6edf3_u8g2Tb4b4b4.Te6edf3drawXBMTb4b4b4(Te6edf3xTb4b4b4, Te6edf3yTb4b4b4, Te6edf3wTb4b4b4, Te6edf3hTb4b4b4, Te6edf3bitsTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657uint16_t Te6edf3getTextWidthTb4b4b4(Tff7b72const Tffa657charTff7b72* Te6edf3strTb4b4b4) Te6edf3override Tb4b4b4{
Tff7b72return Te6edf3_u8g2Tb4b4b4.Te6edf3getStrWidthTb4b4b4(Te6edf3strTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tffa657void Te6edf3endFrameTb4b4b4(Tb4b4b4) Te6edf3override Tb4b4b4{
Te6edf3_u8g2Tb4b4b4.Te6edf3sendBufferTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3privateTff7b72:
Tffa657int Te6edf3_cursorX Tff7b72= T79c0ff0Tb4b4b4;
Tffa657int Te6edf3_cursorY Tff7b72= T79c0ff0Tb4b4b4;
Tb4b4b4}Tb4b4b4;
Served by rngit 1.5.4 - Generated in 0.06s